summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authort895 <clombardo169@gmail.com>2023-11-21 20:51:14 +0100
committert895 <clombardo169@gmail.com>2023-11-21 20:53:32 +0100
commit14398a1cbb0377dde8afa97c1003acde835fc398 (patch)
treedc8cbdb9d29fdb98c98195f084ef2de85ddc2b9d
parentfrontend_common: Add special config case for unmapped windows network drives (diff)
downloadyuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar.gz
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar.bz2
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar.lz
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar.xz
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.tar.zst
yuzu-14398a1cbb0377dde8afa97c1003acde835fc398.zip
-rw-r--r--src/frontend_common/config.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp
index b3f4a54a4..cf149ec26 100644
--- a/src/frontend_common/config.cpp
+++ b/src/frontend_common/config.cpp
@@ -16,6 +16,8 @@
#include <boost/algorithm/string/replace.hpp>
+#include "common/string_util.h"
+
namespace FS = Common::FS;
Config::Config(const ConfigType config_type)
@@ -56,16 +58,43 @@ void Config::Initialize(const std::optional<std::string> config_path) {
}
void Config::WriteToIni() const {
- if (const SI_Error rc = config->SaveFile(config_loc.c_str(), false); rc < 0) {
+ FILE* fp = nullptr;
+#ifdef _WIN32
+ fp = _wfopen(Common::UTF8ToUTF16W(config_loc).data(), L"wb");
+#else
+ fp = fopen(config_loc.c_str(), "wb");
+#endif
+
+ CSimpleIniA::FileWriter writer(fp);
+ const SI_Error rc = config->Save(writer, false);
+ if (rc < 0) {
LOG_ERROR(Frontend, "Config file could not be saved!");
}
+ fclose(fp);
}
void Config::SetUpIni() {
config = std::make_unique<CSimpleIniA>();
config->SetUnicode(true);
config->SetSpaces(false);
- config->LoadFile(config_loc.c_str());
+
+ FILE* fp = nullptr;
+#ifdef _WIN32
+ _wfopen_s(&fp, Common::UTF8ToUTF16W(config_loc).data(), L"rb, ccs=UTF-8");
+ if (fp == nullptr) {
+ fp = _wfopen(Common::UTF8ToUTF16W(config_loc).data(), L"wb, ccs=UTF-8");
+ }
+#else
+ fp = fopen(config_loc.c_str(), "rb");
+ if (fp == nullptr) {
+ fp = fopen(config_loc.c_str(), "wb");
+ }
+#endif
+
+ if (SI_Error rc = config->LoadFile(fp); rc < 0) {
+ LOG_ERROR(Frontend, "Config file could not be loaded!");
+ }
+ fclose(fp);
}
bool Config::IsCustomConfig() const {